package solutions.ferpa.ztest.intf;

import br.com.telescope.adsrt.lib.*;
import br.com.telescope.t2.AccessPolicy;
import br.com.telescope.t2.ServiceModel;
import br.com.telescope.t2.exception.ApplicationRuntimeException;
import br.com.telescope.t2.feature.CustomFeature;
import solutions.ferpa.ztest.ent.*;

/**
 * Atualizar menus.
 * <p>
 * Comando para atualização dos menus.
 * <P>
 * O simples fato de chamar esta interface faz com que o menu do usuário 
 * seja reconstruído.
 * <P>
 * Normalmente a montagem do menu é feita apenas no momento de seu login. 
 * Isso significa que quando houver qualquer mudança relacionada com a 
 * suas regras de acesso e/ou novas opções disponibilizadas, somente 
 * serão visíveis no próximo login do usuário ou após a chamada desta 
 * função.
 * <P>
 * Telescope origin: RTMENU.REFRESH_MENUS
 * <P>
 * @author TELESCOPE - Build task T2 Web Interface Generator
 * <P>
 * @version 0.1
 */
public class RefreshMenus extends ServiceModel {
    
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    public static final String GLOBAL_NAME = "RTMENU.REFRESH_MENUS";
    
    @Override
    public String globalName() {
        return GLOBAL_NAME;
    }
    
    {
        setTitle("Atualizar menus");
    }
    
    
    // Record items
    
    // Query items
    
    @Override
    public void initAttributes() {
        
    }
    
    @Override
    public String getDefaultOrderBy() {
        return "";
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="USER">
    public class FUser extends CustomFeature {
        
        @Override
        public void initForm() {
        }
        
        @Override
        public int getAccessPolicy() {
            return AccessPolicy.PUBLIC;
        }
        
        @Override
        public void preDisplay() {
            try {
                tirarMenuSessao();
            } catch (AdsException ex) {
                throw new ApplicationRuntimeException(ex);
            }
        }
        
        {
            setFeatureName("USER");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="initFeatures">
    
    @Override
    protected void initFeatures() {
        addFeature(new FUser());
        super.initFeatures();
    }
    
    @Override
    public String getDefaultFeature() {
        return "USER";
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Getters and Setters">
    // </editor-fold>
    
    /**
     * Tirar menu da sessão.
     * <p>
     * Zera o menu existente para a sessão, forçando que ele seja recalculado 
     * na próxima vez que for usado.
     * <P>
     */
    private void tirarMenuSessao() throws AdsException {
        // <user-code id="0" parentId="811078" hashcode="-76f38620" length="23">
        refreshSessionMenu();
        
        // </user-code>
    }
}
